package com.tn.dao.alarm;

import com.tn.controller.alarm.common.model.alarm.entity.AlarmDO;
import com.tn.controller.alarm.common.model.alarm.entity.WorkAreaDO;
import com.tn.controller.alarm.common.model.alarm.vo.AlarmQueryVO;
import com.tn.controller.alarm.common.model.alarm.vo.AlarmVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 告警数据访问层
 *
 * @program: tn_aucy_java
 * @author: yangjiayao
 * @create: 2022/2/17
 */
@Repository
public interface IAlarmDao {
    /**
     * 查询告警参数
     *
     * @param name 参数名
     * @return 参数值
     */
    String queryAlarmParam(@Param("name") String name);

    /**
     * 更新告警参数
     *
     * @return 更新结果
     */
    int updateAlarmParam(@Param("name") String name, @Param("value") String value);

    /**
     * 新增告警参数
     *
     * @return 新增结果
     */
    int insertAlarmParam(@Param("name") String name, @Param("value") String value);

    /**
     * 新增告警信息
     *
     * @param alarmDO 告警信息
     * @return 新增结果
     */
    int insertAlarmInfo(@Param("alarmDO") AlarmDO alarmDO);

    /**
     * 分页查询总数
     *
     * @param alarmQueryVO 查询条件
     * @return 总数
     */
    int queryAlarmCount(@Param("alarmQueryVO") AlarmQueryVO alarmQueryVO);

    /**
     * 分页查询告警信息
     *
     * @param startIndex   开始索引
     * @param pageSize     页长
     * @param alarmQueryVO 查询条件
     * @return 查询结果
     */
    List<AlarmVO> queryAlarmByPage(@Param("startIndex") int startIndex, @Param("pageSize") int pageSize,
                                   @Param("alarmQueryVO") AlarmQueryVO alarmQueryVO);

    /**
     * 处理告警信息
     *
     * @param alarmEntity 告警信息
     * @return 处理结果
     */
    int handleAlarm(@Param("alarmEntity") AlarmDO alarmEntity);

    /**
     * 查询堆垛位置信息
     *
     * @param storeHouse 库场
     * @return 堆垛位置信息
     */
    WorkAreaDO queryWorkArea(@Param("storeHouse") String storeHouse);
}
